// models/girl_model.go
// 定义一对多关联关系的数据模型
// 该文件包含GirlModel（一的一方）和BoyModel（多的一方）两个结构体
// 演示了GORM中一对多关联关系的定义方式和使用方法
package models

// GirlModel 表示女孩模型（一对多关系中的一的一方）
// 该模型映射到数据库中的girl_models表
// 每个GirlModel可以拥有多个关联的BoyModel记录
type GirlModel struct {
	ID      int         `gorm:"primaryKey"` // 主键ID，自动递增
	Name    string      `gorm:"size:16;not null"` // 女孩名称，最大长度16字符，不能为空
	BoyList []BoyModel  `gorm:"foreignKey:GirlID"` // 关联的男孩列表，一对多关系
	// foreignKey:GirlID 表示BoyModel使用GirlID字段作为外键关联到GirlModel的ID字段
}

// BoyModel 表示男孩模型（一对多关系中的多的一方）
// 该模型映射到数据库中的boy_models表
// 每个BoyModel记录属于一个特定的GirlModel记录
type BoyModel struct {
	ID        int         `gorm:"primaryKey"` // 主键ID，自动递增
	Name      string      `gorm:"size:16;not null"` // 男孩名称，最大长度16字符，不能为空
	GirlID    int         `gorm:"index"` // 外键，关联到GirlModel的ID字段，添加索引提高查询效率
	GirlModel GirlModel   `gorm:"foreignKey:GirlID"` // 反向关联，指向所属的GirlModel
	// 这种定义方式允许从BoyModel访问其所属的GirlModel
}
